package com.liuboss.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 
 * </p>
 *
 * @author 永乐大帝！！！
 * @since 2021-12-31
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("m_user")
public class User implements Serializable {


    /*
    *   @NotNull：不能为null，但可以为empty
        @NotEmpty：不能为null，而且长度必须大于0
        @NotBlank：只能作用在String上，不能为null，而且调用trim()后，长度必须大于0
    * */

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @NotBlank(message = "昵称不能为空！")
    private String username;

    private String avatar;

    @NotBlank(message = "邮箱不能为空！")
    @Email(message = "邮箱格式不正确！")
    private String email;

    private String password;

    private Integer status;

    private LocalDateTime created;

    private LocalDateTime lastLogin;

    /*
    *   相关知识点进行总结
    *   使用javax.validation.constraints包的注解实现校验
    *   @Null  被注释的元素必须为null
        @NotNull  被注释的元素不能为null
        @AssertTrue  被注释的元素必须为true
        @AssertFalse  被注释的元素必须为false
        @Min(value)  被注释的元素必须是一个数字，其值必须大于等于指定的最小值
        @Max(value)  被注释的元素必须是一个数字，其值必须小于等于指定的最大值
        @DecimalMin(value)  被注释的元素必须是一个数字，其值必须大于等于指定的最小值
        @DecimalMax(value)  被注释的元素必须是一个数字，其值必须小于等于指定的最大值
        @Size(max,min)  被注释的元素的大小必须在指定的范围内。
        @Digits(integer,fraction)  被注释的元素必须是一个数字，其值必须在可接受的范围内
        @Past  被注释的元素必须是一个过去的日期
        @Future  被注释的元素必须是一个将来的日期
        @Pattern(value) 被注释的元素必须符合指定的正则表达式。
        @Email 被注释的元素必须是电子邮件地址
        @Length 被注释的字符串的大小必须在指定的范围内
        @NotEmpty  被注释的字符串必须非空
        @Range  被注释的元素必须在合适的范围内
    *
    * */



}
